from django.db import models

# Create your models here.
class Asset(models.Model):
    """所有资产的共有数据表
    
    Attributes:
        sn: 这个数据字段是所有资产都必须有，并且唯一不可重复的！通常来自自动收集的数据中；
        name: 和sn一样，也是唯一的；
        asset_type_choice: 和asset_status分别设计为两个选择类型
        adamin: 当前资产的管理员
        approved_by: 将该资产上线的审批员
        导入Django内置的User表，作为我们CMDB项目的用户表，用于保存管理员和审判员等人员信息；
        asset表中的很多字段内容都无法自动获取，需要我们手动输入，比如合同、备注。
    """
    asset_type_choice = (
        ('server', '服务器'),
        ('networkdevice', '网络设备'),
        ('storagedevice', '存储设备'),
        ('securitydevice', '安全设备'),
        ('software', '软件资产'),
    )

    asset_status = (
        (0, '在线'),
        (1, '下线'),
        (2, '未知'),
        (3, '故障'),
        (4, '备用'),
    )

    asset_type = models.CharField(choices=asset_type_choice, max_length=64, default='server', verbose_name='资产类型')
    name = models.CharField(max_length=64, unique=True, verbose_name='资产名称') # 不可重复
    sn = models.CharField(max_length=128, unique=True, verbose_name='资产序列号')# 不可重复
    business = models.ForeignKey('BusinessUnit', null=True, blank=True, verbose_name='所属业务线')
    status = models.SmallIntegerField(choices=asset_status, default=0, verbose_name='设备状态')

    manufacturer = models.ForeignKey('Manufacturer', null=True, blank=True, verbose_name='制造商')
    manage_ip = models.GenericIPAddressField(null=True, blank=True, verbose_name='管理IP')
    tags = models.ManyToManyField('Tag', blank=True, verbose_name='标签')
    admin = models.ForeignKey(User, null=True, blank=True, verbose_name='资产管理员', related_nname='admin')
    idc = models.ForeignKey('IDC', null=True, blank=True, verbose_name='所在机房')